<?php
class Denuncia extends Doctrine_Record {
    public function setTableDefinition() {
        $this->setTableName('denuncia');
        $this->hasColumn('motivo','string',255);
        $this->hasColumn('fecha','date');
        $this->hasColumn('id_tipo','integer');
        $this->hasColumn('id_estado','integer');
        $this->hasColumn('idObjetoDenunciado','integer');
    }

    public function setUp(){
        $this->hasOne('TipoDenuncia as tipo',array(
            'local'=>'id_tipo',
            'foreign'=>'id'
        ));
        $this->hasOne('Estado as estado',array(
            'local'=>'id_estado',
            'foreign'=>'id'
        ));
    }

    //INCIO DE GETERS Y SETERS
    public function getMotivo () {
        return utf8_decode($this->_get('motivo'));
    }
    public function setMotivo ($motivo) {
        $this->_set('motivo', utf8_encode($motivo));
    }

    //simulacion de objetos
     public function getUsuario () {
        return Doctrine::getTable('usuario')->find($this->_get('idObjetoDenunciado'));
    }
    public function setUsuario ($usuario) {
        $this->set('idObjetoDenunciado', $usuario->id);
    }
    
    public function getPublicacion () {
        return Doctrine::getTable('publicacion')->find($this->_get('idObjetoDenunciado'));
    }
    public function setPublicacion ($publicacion) {
        $this->set('idObjetoDenunciado', $publicacion->id);
    }
    
    public function getMarker () {
        return Doctrine::getTable('maker')->find($this->_get('idObjetoDenunciado'));
    }
    public function setMarker ($marker) {
        $this->set('idObjetoDenunciado', $marker->id);
    }

    public function getComentarioMarker () {
        return Doctrine::getTable('comentario')->find($this->_get('idObjetoDenunciado'));
    }
    public function setComentarioMaker ($comentario) {
        $this->set('idObjetoDenunciado', $comentario->id);
    }
    
    public function getComentarioImagen () {
        return Doctrine::getTable('comentario')->find($this->_get('idObjetoDenunciado'));
    }
    public function setComentarioImagen ($comentario) {
        $this->set('idObjetoDenunciado', $comentario->id);
    }
    
    public function getPregunta () {
        return Doctrine::getTable('comentario')->find($this->_get('idObjetoDenunciado'));
    }
    public function setPregunta ($comentario) {
        $this->set('idObjetoDenunciado', $comentario->id);
    }
    
    public function getRespuesta () {
        return Doctrine::getTable('comentario')->find($this->_get('idObjetoDenunciado'));
    }
    public function setRespuesta ($comentario) {
        $this->set('idObjetoDenunciado', $comentario->id);
    }

    public function getImagenMarker () {
        return Doctrine::getTable('imagen')->find($this->_get('idObjetoDenunciado'));
    }
    public function setImagenMarker ($imagen) {
        $this->set('idObjetoDenunciado', $imagen->id);
    }
    //FIN SETERS Y GETERS
}

/*
 * COMO FUNCIONA
 * El objeto denuncia engloba todo tipo de denuncia que el sistema necesite.
 * Se identifica con un tipo de denuncia que luego se usua como filtro.
 * Como una denuncia, segun del tipo que se, va a "denunciar" varios objetos, esta unica clase
 * en vez de guardar el objeto denunciado guarda su id. Con ese id lugo va a recuperar al objeto simulado
 * a traves de los getter
 * Ver tambien en el Objeto usuario la seccion denuncias
 */
?>